package com.example.test.common;

public enum ServiceExceptionEnum {

  // ========== 系统级别 0-成功，5xxx 异常==========
  SUCCESS(0, "成功"),
  SYS_ERROR(50001, "服务端发生异常"),
  MISSING_REQUEST_PARAM_ERROR(50002, "参数缺失"),

  // 业务异常 1-{模块2位}-{模块内异常2位}
  // ========== 系统用户 101 ==========
  USER_NOT_FOUND(10101, "用户不存在"),
  USER_EXIST(10102, "用户已存在"),
  USER_PASSWORD_ERROR(10103, "用户密码错误"),
  USER_ACCOUNT_OR_PASSWORD_ERROR(10104, "账号或密码错误"),
  USER_LOCKED(10105, "账号被锁定,请联系管理员"),

  // 短信 102
  SMS_SEND_FAIL(10201, "短信发送失败"),

  // 设备 103
  DEVICE_NOT_FOUND(10301, "设备不存在"),

  // 业务用户 104
  PERSON_NOT_FOUND(10401, "用户不存在"),


  // 文件上传 105
  FILE_CAN_NOT_NULL(10501, "文件不可为空"),
  FILE_TOO_LARGE(10502, "文件太大"),
  FILE_UNSUPPORTED_FORMAT(10503, "不支持的文件格式"),
  FILE_IMPORT_FAIL(10504, "文件导入失败"),

  // 告警 106
  ALARM_NOT_FOUND(10601, "告警信息不存在"),
  ALARM_VERIFY_TOKEN_NOT_FOUND(10602, "告警校验token不存在或失效"),


  // 角色 107
  ROLE_EXIST(10701, "角色已存在"),
  ROLE_ENABLE(10701, "该角色已被用户使用,请先取消使用再删除该角色")
  // ========== 其它模块 ... ==========
  ;

  /**
   * 错误码
   */
  private final int code;
  /**
   * 错误提示
   */
  private final String msg;

  ServiceExceptionEnum(int code, String msg) {
    this.code = code;
    this.msg = msg;
  }

  public int getCode() {
    return code;
  }

  public String getMsg() {
    return msg;
  }

  public ServiceException exception() {
    return new ServiceException(this);
  }

  public static void main(String[] args) {
      throw com.example.test.common.ServiceExceptionEnum.USER_NOT_FOUND.exception();
  }

}
